package com.spoto.oa.dao;

import java.sql.SQLException;
import java.util.List;

import com.spoto.oa.model.Product;

/**
 * 
 * @Project_name: OA
 * @Description: 产品数据操作的封装
 * @Author: Young
 * @Version: 
 * @Date: 2010-10-11
 */
public interface ProductDao {
	
	/**
	 * 查询产品在数据库中的ID
	 * @param product
	 * @return
	 */
	public String getProductId(Product product);
	
	/**
	 * 根据产品编号返回对应的产品信息
	 * @param code
	 * @return
	 */
	public Product selectByCode(String code);
	
	/**
	 * 根据产品名称检索产品
	 * @param name
	 * @return
	 */
	public List<Product> getByName(String name);
	
	/**
	 * 根据产品提供商检索产品
	 * @param company
	 * @return
	 */
	public List<Product> getByCompany(String company);
	
	/**
	 * 根据产品编码检索产品
	 * @param code
	 * @return
	 */
	public List<Product> getByCode(String code);
	
	/**
	 * 根据产品类型获取
	 * @param type
	 * @return
	 */
	public List<Product> getByType(String type);
	
	/**
	 * 新增产品
	 * @param employee
	 * @throws SQLException 
	 */
	public void save(Product product) throws SQLException;
	
	/**
	 * 删除产品
	 * @param employee
	 */
	public void delete(Product product);
	
	/**
	 * 更新产品
	 * @param id
	 * @param product
	 */
	public void update(int id,Product product);
	
	/**
	 * 获取所有产品
	 */
	public List<Product> getAllProduct();
	
	/**
	 * 获取产品类型
	 */
	public List<String> getType();
	
	/**
	 * 添加产品类型
	 */
	public String addType(String value);
	
	/**
	 * 删除产品类型
	 */
	public void delType(String key);
	
	/**
	 * 修改产品类型
	 */
	public void editType(String key,String value);
	
	/**
	 * 查询类型是否
	 * @param type
	 * @return
	 */
	public boolean queryType(String type);
	
	/**
	 * 取出所有冲突数据
	 * @return
	 */
	public List<Product> getAllProductConflict();
	
	/**
	 * 删除冲突数据
	 * @param product
	 */
	public void deleteConflict(Product product);
	
	/**
	 * 取得冲突的数据
	 * @param code
	 * @return
	 */
	public Product selectConflictCode(String code);
	
	/**
	 * 保存导入数据时发生冲突的数据
	 * @param product
	 * @throws SQLException
	 */
	public void saveConfict(Product product) throws SQLException;
	
}
